package cliente.mediador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import servidor.dominio.Empleado;

import comun.dto.*; 
import comun.iControl.*;


import cliente.ClienteConection;
import cliente.Funciones;
import cliente.gui.*;


public class MediadorListarEmpleados implements ActionListener {

	private GUIListadoDeEmpleados guiEmpleados=null;
	public IControlEmpleado controlEmpleado;
	public IControlConcepto controlConcepto;
	public IControlCategoria controlCategoria;
	public Funciones fun;

	public MediadorListarEmpleados() throws Exception{
		ClienteConection empleadoConexion = new ClienteConection();
		try{
			empleadoConexion.iniciar();
		}catch(Exception ex){
			ex.printStackTrace();
		}
		this.controlEmpleado=empleadoConexion.getIControlEmpleado();
		this.controlConcepto=empleadoConexion.getIControlConcepto();
		this.controlCategoria=empleadoConexion.getIControlCategoria();
		guiEmpleados=new GUIListadoDeEmpleados();
		fun=new Funciones();
		guiEmpleados.setActionListeners(this);
		show();
	}


	private void show() {  	
		guiEmpleados.getCuil().setEditable(false);
		guiEmpleados.show();
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();   

		try{

			if (source==guiEmpleados.getEleccion()){
				int eleccion=guiEmpleados.getEleccion().getSelectedIndex();
				if(eleccion==0){
					guiEmpleados.getCuil().setEditable(false);
					guiEmpleados.getCuit().setEditable(true);
					guiEmpleados.getCuil().setText("");
					guiEmpleados.setTablaEmpleado();
				}else if(eleccion==1){
					guiEmpleados.getCuit().setEditable(false);
					guiEmpleados.getCuil().setEditable(true);
					guiEmpleados.getCuit().setText("");
					guiEmpleados.setTablaEmpleado();
				}else if(eleccion==2){
					guiEmpleados.getCuit().setEditable(false);
					guiEmpleados.getCuil().setEditable(false);
					guiEmpleados.getCuit().setText("");
					guiEmpleados.getCuil().setText("");
					guiEmpleados.setTablaEmpleado();

				}

			}else if(source==guiEmpleados.getListar()){
				if((!guiEmpleados.getCuit().isEditable())&&(guiEmpleados.getCuil().isEditable())){
					String cuil=guiEmpleados.getCuil().getText();
					if (!fun.cuitValido(cuil)){
						JOptionPane.showMessageDialog(new JFrame(),"El Cuil no es Valido","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
					}else{
						Vector<EmpleadoDTO> empleados=controlEmpleado.getEmpleadosCuil(cuil);
						guiEmpleados.setTablaEmpleados(empleados);
					}
				}else if(!(guiEmpleados.getCuil().isEditable())&&(guiEmpleados.getCuit().isEditable())){
					String cuit=guiEmpleados.getCuit().getText();
					if (!fun.cuitValido(cuit)){
						JOptionPane.showMessageDialog(new JFrame(),"El Cuit no es Valido","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
					} else{
						Vector<EmpleadoDTO> empleados=controlEmpleado.getEmpleados(cuit);
						guiEmpleados.setTablaEmpleados(empleados);
					}

				}else{
					Vector<EmpleadoDTO> empleados=controlEmpleado.getEmpleados();
					guiEmpleados.setTablaEmpleados(empleados);
				}

			}
			else if (source==guiEmpleados.getSalir()){
				guiEmpleados.dispose();

			}
		}catch(Exception p){
			System.err.println("Caught Exception: " + p.getMessage());
		}

	}
}
